﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;

namespace QLMBMT
{
    public partial class FrmLapPhieuThu : DevExpress.XtraEditors.XtraForm
    {
        // Khai báo
        int sua = 0,  sttphieuthu;
        private DataSet ds = new DataSet();
        private DataTable dt = new DataTable();
        private SqlDataAdapter da = new SqlDataAdapter();
        private SqlCommand com = new SqlCommand();

        classConnection _classConnection = new classConnection();

        // Hàm đưa dữ liệu lên các Lookup Edit và Data GridView
        private void LoadData()
        {
            // Đưa dữ liệu lên Data GridView
            com = new SqlCommand("Select * from HOA_DON", _classConnection.con);
            da = new SqlDataAdapter();
            ds = new DataSet();
            da.SelectCommand = com;
            da.Fill(ds);
            lupSTTHoaDon.Properties.DataSource = ds.Tables[0];
            GridLookUpEditPhieuthurefHoadon.DataSource = ds.Tables[0];

            // đổ dữu liệu vào data gridview
            com = new SqlCommand("Select * from PHIEU_THU", _classConnection.con);
            da = new SqlDataAdapter();
            da.SelectCommand = com;
            ds = new DataSet();
            da.Fill(ds);
            dgDsPhieuthu.DataSource = ds.Tables[0];

            txtSTTPhieuthu.DataBindings.Clear();
            txtSTTPhieuthu.DataBindings.Add("EditValue", dgDsPhieuthu.DataSource, "STTPHIEUTHU");
            lupSTTHoaDon.DataBindings.Clear();
            lupSTTHoaDon.DataBindings.Add("EditValue", dgDsPhieuthu.DataSource, "STTHOADON");
            txtSoTienthu.DataBindings.Clear();
            txtSoTienthu.DataBindings.Add("EditValue", dgDsPhieuthu.DataSource, "SOTIENTHU");
            dateNgaythu.DataBindings.Clear();
            dateNgaythu.DataBindings.Add("EditValue", dgDsPhieuthu.DataSource, "NGAYTHU");

            // Thiết lập trạng thái cho các control
            btnThem.Enabled = true;
            btnSua.Enabled = true;
            btnXoa.Enabled = true;
            btnLuu.Enabled = false;
            btnHuy.Enabled = false;
            btnThoat.Enabled = true;

            txtSoTienthu.Properties.ReadOnly = true;
            txtSTTPhieuthu.Properties.ReadOnly = true;
            lupSTTHoaDon.Properties.ReadOnly = true;
            dateNgaythu.Properties.ReadOnly = true;
            dgDsPhieuthu.Enabled = true;
        }

        public FrmLapPhieuThu()
        {
            InitializeComponent();
            _classConnection.KetNoiCSDL();
        }

        // Xử lí sự kiện Load Form
        private void FrmLapPhieuThu_Load(object sender, EventArgs e)
        {
            LoadData();
        }

        // Xử lí sự kiện Click của nút "Thêm"
        private void btnThem_Click(object sender, EventArgs e)
        {
            // Code tự động tăng STT Phiếu thu khi Người dùng thêm mới một Phiếu thu
            dgDsPhieuthu.Enabled = true;
            com = new SqlCommand("select max (STTPHIEUTHU) from PHIEU_THU", _classConnection.con);

            try
            {
                 sttphieuthu = Convert.ToInt32(com.ExecuteScalar());
                
            }
            catch (Exception ex)
            {
                sttphieuthu = 0;
                MessageBox.Show(ex.Message, "Thong bao");

            }
            sttphieuthu++;
            txtSTTPhieuthu.Text = sttphieuthu.ToString();

            // Thiết lập trạng thái cho các control
            dateNgaythu.Properties.MinValue = new DateTime(2000, 12, 31);
            dateNgaythu.EditValue = System.DateTime.Today.Date;
            txtSoTienthu.ResetText();
            lupSTTHoaDon.EditValue = null;

            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
            btnThoat.Enabled = true;

            txtSoTienthu.Properties.ReadOnly = false;
            txtSTTPhieuthu.Properties.ReadOnly = true;
            lupSTTHoaDon.Properties.ReadOnly = false;
            dateNgaythu.Properties.ReadOnly = false;

           
                   
        }

        // Xử lí sự kiện Click của nút "Sửa"
        private void btnSua_Click(object sender, EventArgs e)
        {
            dgDsPhieuthu.Enabled = true;
            sua = 1;
            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
            btnThoat.Enabled = true;

            txtSoTienthu.Properties.ReadOnly = false;
            txtSTTPhieuthu.Properties.ReadOnly = true;
            lupSTTHoaDon.Properties.ReadOnly = false;
            dateNgaythu.Properties.ReadOnly = false;

        }

        // Xử lí sự kiện Click của nút "Xóa"
        private void btnXoa_Click(object sender, EventArgs e)
        {
            btnThem.Enabled = false;
            btnSua.Enabled = false;
            btnXoa.Enabled = false;
            btnLuu.Enabled = true;
            btnHuy.Enabled = true;
            btnThoat.Enabled = true;

            if (MessageBox.Show("Ban co chac chan muon xoa?", "Thong bao", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                SqlCommand comm = new SqlCommand();
                comm.Connection = _classConnection.con;
                comm.CommandType = CommandType.Text;
                comm.CommandText = "Delete From PHIEU_THU Where STTPHIEUTHU=@STTPHIEUTHU";
                comm.Parameters.Add("STTPHIEUTHU", SqlDbType.NVarChar).Value = txtSTTPhieuthu.Text;
                comm.ExecuteNonQuery();
                MessageBox.Show("Xoa thanh cong");
                LoadData();

            }
           
        }

        // Xử lí sự kiện Click của nút "Lưu"
        private void btnLuu_Click(object sender, EventArgs e)
        {
            try
            {
                // Kiểm tra các trường phải nhập dữ liệu đầy đủ
                if (txtSoTienthu.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Số tiền thu' ", "Thông báo");
                    return;
                }

                if (lupSTTHoaDon.EditValue == null)
                {
                    MessageBox.Show("Bạn chưa nhập 'STT Hóa đơn' ", "Thông báo");
                    return;
                }

                if (dateNgaythu.Text == "")
                {
                    MessageBox.Show("Bạn chưa nhập 'Ngày thu' ", "Thông báo");
                    return;
                }

                if (sua == 0)
                {
                    //Thêm dữ liệu vào CSDL
                    com = _classConnection.con.CreateCommand();
                    com.CommandText = "Insert Into PHIEU_THU Values(@STTPHIEUTHU,@STTHOADON,@NGAYTHU,@SOTIENTHU)";

                    com.Parameters.Add("@STTPHIEUTHU", SqlDbType.VarChar).Value = txtSTTPhieuthu.EditValue;
                    com.Parameters.Add("@SOTIENTHU", SqlDbType.VarChar).Value = txtSoTienthu.EditValue;
                    com.Parameters.Add("@STTHOADON", SqlDbType.NVarChar).Value = lupSTTHoaDon.EditValue;
                    com.Parameters.Add("@NGAYTHU", SqlDbType.Date).Value = dateNgaythu.DateTime.Date;
                    com.ExecuteNonQuery();

                    MessageBox.Show("Đã thêm vào phiếu thu thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                else
                {
                    // Cập nhật dữ liệu của CSDL
                    txtSTTPhieuthu.Properties.ReadOnly = true;
                    com = _classConnection.con.CreateCommand();
                    com.CommandText = "Update PHIEU_THU set STTHOADON = @STTHOADON, NGAYTHU= @NGAYTHU, SOTIENTHU = @SOTIENTHU where STTPHIEUTHU=@STTPHIEUTHU";

                    com.Parameters.Add("@STTPHIEUTHU", SqlDbType.VarChar).Value = txtSTTPhieuthu.EditValue;
                    com.Parameters.Add("@SOTIENTHU", SqlDbType.VarChar).Value = txtSoTienthu.EditValue;
                    com.Parameters.Add("@STTHOADON", SqlDbType.NVarChar).Value = lupSTTHoaDon.EditValue;
                    com.Parameters.Add("@NGAYTHU", SqlDbType.Date).Value = dateNgaythu.DateTime.Date;
                    com.ExecuteNonQuery();

                    MessageBox.Show("Đã cập nhật thông tin phiếu thu!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);


                }
                LoadData();
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }
        }

        // Xử lí sự kiện Click của nút "Hủy"
        private void btnHuy_Click(object sender, EventArgs e)
        {
            LoadData();
        }

        // Xử lí sự kiện Click của nút "Thoát"
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
            _classConnection.con.Close();
            
        }

       // Code chỉ cho phép nhập số vào trường Số tiền thu

        private void txtSoTienthu_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
                e.Handled = true;
        }

       
         

       
    }
}